
package entrega;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
 * Programa en el que se  introduce el número de billetes de autobus deseados y 
 * la edad para la que se desean
 * Se contabilizará el total de entradas vendidas, el total recaudado, así como
 * el total de entradas por categoría y su recaudación, y el porcentaje de 
 * ocupación del autobus
 * El programa finaliza al intoducir un 0 o superar las plazas libres
 *    Autor:Fernando Ortega Gonzalez
 */
public class tres_corregido 
{//clase tres_corregido
    public static void main(String args[])throws IOException
    {//main
        int plazas=60,jubilado=0,joven=0,infantil=0,adulto=0,totalinfantil,billetes,edad;
        float totaljoven,totaladulto,totaljubilado,total;
        boolean cero=false, ocupado=false,mal=true;
        billetes=pedirBilletes("¿Cuantos billetes desea?\t",mal);
        if(billetes==0)
        {//el primero es un 0
            cero=true;
        }//el primero es un 0
        else
        {//el primero no es un 0
            while(!ocupado)
            {//mientras haya plazas
                plazas=plazas-billetes;
                if(plazas<0 || billetes==0)
                {//si meto un 0 o no hay plazas
                    System.out.println("No hay tantas plazas como desea");
                    ocupado=true;
                }
                else
                {
                    
                        edad=pedirEdad("¿Para que edad?\t");
                        while(edad<0)
                        {//edad positiva
                            edad=pedirEdad("Edad errónea, introduzca de nuevo\t");
                        }//edad  positiva
                        if (edad <=6)
                        {//infantil
                            infantil=infantil+billetes;
                        }//infantil
                        else
                        {//no infantil
                            if(edad>6 && edad<=18)
                            {//joven
                                joven=joven+billetes;  
                            }//joven
                            else
                            {//no joven
                                if(edad>18 && edad <=65)
                                {//adulto
                                    adulto=adulto+billetes;
                                }//adulto
                                else
                                {//jubilado
                                    jubilado=jubilado+billetes;
                                }//jubilado
                            }//no joven
                        } //no infantil
                }
            }
        }//el primero no es un 0
        if(cero)
        {
            System.out.println("FIN, has introducido un 0");
        }  
        else
        {
            totalinfantil=(infantil*0);
            totaljoven=(float) (joven*0.5);
            totaladulto=adulto*1;
            totaljubilado=(float) (jubilado*0.25);
            total=totalinfantil+totaljoven+totaladulto+totaljubilado;
            System.out.println("0-6 años\t"+infantil+"\t"+totalinfantil);
            System.out.println("6-18 años\t"+joven+"\t"+totaljoven);
            System.out.println("18-65 años\t"+adulto+"\t"+totaladulto);
            System.out.println("65- años\t"+jubilado+"\t"+totaljubilado);
            System.out.println("TOTAL\t\t"+plazas+"\t"+total);
        }
    }//main
    /*
     * @param mensaje
     * @return
     * @throws IOException 
     */
    public static int pedirBilletes(String mensaje, boolean mal)throws IOException
    {
        int numero = 0;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        while(mal)
        {
            try
            {
                System.out.print(mensaje);
                numero=Integer.parseInt(teclado.readLine());
                while(numero<0)
                {
                    System.out.print("Introduce un número positivo\n");
                    numero=Integer.parseInt(teclado.readLine());
                }
                mal=false;
            }
            catch(NumberFormatException ex)
            {//controla que introduzca letras y no números
                          System.out.println("No has introducido un número");  
            }//controla que introduzca letras y no números
        }    
        return numero;//DEVUELVE EL NUMERO
    } 
    /** Método que recibe una cadena de caracteres y devuelve un numero entero
     * @param mensaje
     * @return
     * @throws IOException 
     */
    public static int pedirEdad(String mensaje)throws IOException//Metodo que pide un número
    {//pedirEdad
        int numero;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        System.out.print(mensaje);//MENSAJE LO HE PASADO DESDE edad
        numero=Integer.parseInt(teclado.readLine());
        return numero;//DEVUELVE EL NUMERO
    } //pedirEdad
}//clase tres_corregido
